@@ -73,29 +73,23 @@ module ApplicationHelper |
||
| 73 | 73 |
end |
| 74 | 74 |
|
| 75 | 75 |
def highlighted?(id) |
| 76 |
- (@hl ||= |
|
| 77 |
- case hl = params[:hl].presence |
|
| 78 |
- when nil |
|
| 79 |
- ->x { false }
|
|
| 80 |
- when String |
|
| 81 |
- values = hl.split(/,/).flat_map { |i|
|
|
| 82 |
- case i |
|
| 83 |
- when /\A(\d+)\z/ |
|
| 84 |
- i.to_i |
|
| 85 |
- when /\A(\d+)?-(\d+)?\z/ |
|
| 86 |
- ($1 ? $1.to_i : 1)..($2 ? $2.to_i : Float::INFINITY) |
|
| 87 |
- else |
|
| 88 |
- [] |
|
| 89 |
- end |
|
| 90 |
- } |
|
| 91 |
- ->x {
|
|
| 92 |
- case x |
|
| 93 |
- when *values |
|
| 94 |
- true |
|
| 95 |
- else |
|
| 96 |
- false |
|
| 97 |
- end |
|
| 98 |
- } |
|
| 99 |
- end)[id] |
|
| 76 |
+ @highlighted_ranges ||= |
|
| 77 |
+ case value = params[:hl].presence |
|
| 78 |
+ when String |
|
| 79 |
+ value.split(/,/).flat_map { |part|
|
|
| 80 |
+ case part |
|
| 81 |
+ when /\A(\d+)\z/ |
|
| 82 |
+ (part.to_i)..(part.to_i) |
|
| 83 |
+ when /\A(\d+)?-(\d+)?\z/ |
|
| 84 |
+ ($1 ? $1.to_i : 1)..($2 ? $2.to_i : Float::INFINITY) |
|
| 85 |
+ else |
|
| 86 |
+ [] |
|
| 87 |
+ end |
|
| 88 |
+ } |
|
| 89 |
+ else |
|
| 90 |
+ [] |
|
| 91 |
+ end |
|
| 92 |
+ |
|
| 93 |
+ @highlighted_ranges.any? { |range| range.cover?(id) }
|
|
| 100 | 94 |
end |
| 101 | 95 |
end |